#include <stdio.h>  
  
// 温度控制策略  
typedef void (*TemperatureControlStrategy)(int currentTemp, int targetTemp);  
  
// 具体的温度控制策略实现  
void HeaterOnStrategy(int currentTemp, int targetTemp) {  
    if (currentTemp < targetTemp) {  
        // 加热逻辑（这里用打印代替实际加热操作）  
        printf("Turning on heater to reach %d degrees (current: %d degrees)\n", targetTemp, currentTemp);  
    } else {  
        printf("Temperature is already at or above target (%d degrees), no action needed\n", targetTemp);  
    }  
}  
  
void CoolerOnStrategy(int currentTemp, int targetTemp) {  
    if (currentTemp > targetTemp) {  
        // 冷却逻辑（这里用打印代替实际冷却操作）  
        printf("Turning on cooler to reach %d degrees (current: %d degrees)\n", targetTemp, currentTemp);  
    } else {  
        printf("Temperature is already at or below target (%d degrees), no action needed\n", targetTemp);  
    }  
}  
  
// 上下文类（使用结构体模拟）  
typedef struct {  
    TemperatureControlStrategy strategy;  
} TemperatureController;  
  
// 初始化上下文  
void initTemperatureController(TemperatureController *controller, TemperatureControlStrategy strategy) {  
    controller->strategy = strategy;  
}  
  
// 执行温度控制  
void controlTemperature(TemperatureController *controller, int currentTemp, int targetTemp) {  
    controller->strategy(currentTemp, targetTemp);  
}  
  
// 主函数，模拟单片机程序入口  
int main() {  
    TemperatureController controller;  
      
    // 假设我们需要加热  
    initTemperatureController(&controller, HeaterOnStrategy);  
    controlTemperature(&controller, 20, 25); // 假设当前温度是20度，目标温度是25度  
      
    // 假设现在我们需要冷却  
    initTemperatureController(&controller, CoolerOnStrategy);  
    controlTemperature(&controller, 30, 25); // 假设当前温度是30度，目标温度仍然是25度  
      
    // 在实际单片机项目中，这里可能不会有return语句，因为单片机程序通常是无限循环的  
    // 但为了符合C语言main函数的规范，我们还是加上了return语句  
    return 0;  
}  
  
// 注意：在单片机项目中，您可能需要移除或替换stdio.h库中的printf函数，  
// 因为单片机通常没有标准C库的支持，或者出于资源考虑需要避免使用它。  
// 您可以使用串行通信（如UART）来输出信息，或者使用LED闪烁等方式来指示状态。